home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok89 / modprocheader / procedureheader.oed < prev    next >
Text File  |  1993-11-04  |  4KB  |  146 lines

  1. /*------------------------------------------
  2.  
  3.   :Program.     ProcedureHeader.oed
  4.   :Author.      Albert Weinert [awn]
  5.   :Address.     Krähenweg 21, D-5000 Köln 30
  6.   :Version.     V1.1
  7.   :Date.        09-May-1993
  8.   :Copyright.   Albert Weinert 1993
  9.   :Language.    ARexx
  10.   :Translator.  Amiga RexxMast V1.15
  11.   :Contents.    Erstellung und Erweiterung von Prozedure Headern
  12.   :Imports.     <Importiertes, Name/ShortCut des Autors>
  13.   :Remarks.     Braucht umbedingt den Oberon Editor "OEd" V2.33
  14.   :Remarks.     Liest die ENV-Variable USER/SHORTCUT aus und nimmt dies als
  15.   :Remarks.     Eintrag dafür im Header.
  16.   :Remarks.     Damit es möglich ist für das Skript Procedure-Deklarationen zu erkennen
  17.   :Remarks.     die sich über mehrere Zeilen erstrecken. *MÜSSEN* auf jedem Fall die
  18.   :Remarks.     (); im Prozedur-Kopf vorhanden sein. Sonst arbeitet das Skript NICHT
  19.   :Remarks.     korrekt.
  20.   :Bugs.        In den einzelne Wörten im Shortcut dürfen diese nicht mit einer
  21.   :Bugs.        Klammer beginnen. Mehrer hintereinanderstehende Leerzeichen werden
  22.   :Bugs.        zu einem Zusammengerafft, beides Sachen die durch den OEd entstanden
  23.   :Bugs.        sind.
  24.   :Usage.       rx ProcedureHeader.oed CREATE ; Erstellt Procedure-Header für Oberon
  25.   :Usage.       rx ProcedureHeader.oed CREATE REXX; Erstellt Procedure-Header ARexx
  26.   :Usage.       rx ProcedureHeader.oed UPDATE ; erstellt eine neue Update-Zeile mit Datum
  27.   :Usage.       z.B. rx ProcedureHeader.oed ADD :Input. 15 ; erstellt unter dem
  28.   :Usage.            alten :Input. Eintrag einen neune und setzt den Cursor auf XPos
  29.   :Usage.            15 relativ zum Beginn. Funktioniert für alle Einträge.
  30.   :History.     0.0    [awn] 03-May-1993 : Erstellt
  31.   :History.     1.0    [awn] 04-May-1993 : Voll Funktionfähig
  32.   :History.     1.1    [awn] 09-May-1993 : BugFix: Beim ADD wurde der Cursor nicht
  33.   :History.            auf die richtige X-Position gesetzt.
  34.  
  35. --------------------------------------------*/
  36. options results
  37. address 'OEd'
  38. parse arg what entry xpos
  39.  
  40. UPPER what
  41. readed=0
  42. CALL GetUserENV("SHORTCUT");
  43.  
  44. short=readed
  45. IF what = UPDATE THEN DO
  46.   'findstr "PROCEDURE"';'prev';
  47.   'findstr "-----*"';'next';
  48.   'findstr ":Update."';'prev';
  49.   'return';
  50.   'write ":Update.    "';
  51.   'write' space(date(),1,"-");
  52.   'write " "'
  53.   CALL WriteString(short); write "-";
  54.   'write " "'
  55. END;
  56.  
  57. IF what = ADD THEN DO
  58.   findstr "PROCEDURE";prev
  59.   findstr "-----*";
  60.   next
  61.   findstr entry
  62.   prev
  63.   'return'
  64.   getposx
  65.   old = result
  66.   'write' entry
  67.   xpos=old+xpos-3
  68.   gotox xpos
  69. END;
  70.  
  71. IF what = CREATE THEN DO
  72.   UPPER entry
  73.   findstr "PROCEDURE";prev;
  74.   IF entry = REXX THEN wleft
  75.   getposx;
  76.   procxpos=result;
  77.   IF entry = "" THEN DO
  78.     findstr ")";next;
  79.     findstr ";";next;
  80.   END;
  81.   'return';
  82.   'gotox' procxpos;
  83.   IF entry = REXX THEN
  84.     'write "/*------------------------------------------"';
  85.  
  86.   ELSE
  87.     'write "(*------------------------------------------"';
  88.   'return';
  89.   'write "  :Input."';
  90.   'return';
  91.   'write ":Output."';
  92.   'return';
  93.   'write ":Semantic."';
  94.   'return';
  95.   'write ":Note."';
  96.   'return';
  97.   getposx;
  98.   xpos=result;
  99.   'write ":Update.    "';
  100.   'write' space(date(),1,"-");
  101.   'write " "'
  102.   CALL WriteString(short); write "-";
  103.   'write " "'
  104.   'write "erstellt."';
  105.   'return';left;left;
  106.   IF entry = REXX THEN
  107.     'write "--------------------------------------------*/"';
  108.   ELSE
  109.     'write "--------------------------------------------*)"';
  110.   DO I= 1 TO 5;
  111.   'up';
  112.   END;
  113.   xpos=xpos+15-3;
  114.   'gotox' xpos;
  115.   what=""
  116. END;
  117.  
  118. EXIT
  119.  
  120. GetUserEnv:PROCEDURE EXPOSE readed
  121.  
  122. PARSE ARG envv
  123.   filename="ENV:USER/"||envv
  124.   IF OPEN(fhandle,filename,"READ") THEN DO
  125.     readed=READLN(fhandle);
  126.     CALL CLOSE(fhandle);
  127.   END;
  128.   ELSE readed = Unset
  129. RETURN
  130.  
  131. WriteString:PROCEDURE
  132.  
  133. PARSE ARG vari
  134.  
  135.   i=1
  136.   DO FOREVER
  137.     word=WORD(vari,i)
  138.     i=i+1
  139.     IF word="" THEN BREAK
  140.     'write' word
  141.     'write " "'
  142.   END
  143.  
  144. RETURN
  145.  
  146.